home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / INFO / DISK_ART.ZIP / DISKS3 < prev   
Text File  |  1989-06-09  |  28KB  |  487 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.         ╔══════════════════════════════════════════════════════════════╗
  7.         ║                                                              ║
  8.         ║             The Logical Structure, Organization,             ║
  9.         ║              and Management of Hard Disk Drives              ║
  10.         ║                                                              ║
  11.         ║                              by                              ║
  12.         ║                         Steve Gibson                         ║
  13.         ║                  GIBSON RESEARCH CORPORATION                 ║
  14.         ║                                                              ║
  15.         ║     Portions of this text originally appeared in Steve's     ║
  16.         ║               InfoWorld Magazine TechTalk Column.            ║
  17.         ║                                                              ║
  18.         ╚══════════════════════════════════════════════════════════════╝
  19.  
  20.  
  21.  
  22.         As our operating systems and application software have continued
  23.         to grow in size, their memory requirements have increased
  24.         steadily. A vital memory in our system is hard disk storage.
  25.  
  26.         Bound within the hard disk's structure lie the answers to
  27.         questions like: What is a low level format? What does FDISK do?
  28.         What is a hard disk partition and why does DOS limit us to 32
  29.         megabytes in a partition? What does it mean to have "lost
  30.         cluster chains" or "cross-linked files?" What does it mean to
  31.         have our disks "defragmented?" Let's explore MS-DOS and PC-DOS
  32.         hard disk organization to answer these questions and others.
  33.  
  34.         The first stage in preparing any hard disk for operation is
  35.         known as low level formatting.  Low level formatting takes any
  36.         hard disk from its virgin "fresh from the factory" state and
  37.         prepares it for operation with a particular hard disk
  38.         controller and computer system.
  39.  
  40.         Low level formatting divides each circular track into equal size
  41.         SECTORS by placing SECTOR ID HEADERS at uniform positions around
  42.         each track. The start of a sector ID is marked with a special
  43.         magnetic pattern which cannot be generated by normal recorded
  44.         data. This ADDRESS MARK allows the beginning of each sector to
  45.         be uniquely discriminated from all recorded data.
  46.  
  47.         The sector ID information, which immediately follows the address
  48.         mark contains each sector's Cylinder, Head, and Sector number
  49.         which is completely unique for each sector on the disk. When the
  50.         hard disk controller is late reading or writing to these disk
  51.         sectors, it compares the sector's pre-recorded cylinder number
  52.         to make sure that the heads haven't "mis-stepped" and that
  53.         they're flying over the proper cylinder.  It then compares the
  54.         head
  55.         number to verify that unreliable cabling is not causing an
  56.         improper head to be selected and waits for the proper sector to
  57.         start by comparing the pre-recorded sector number as it passes
  58.         by with the sector number for which it is searching.
  59.  
  60.         Since many hard disk surfaces are not flawless, low level
  61.         formatting programs include a means for entering the hard disk
  62.         drive's defect list. The defect list specifies tracks (by
  63.         cylinder and head number) that the manufacturer's sensitive drive
  64.         certification equipment found to stray from the normal which
  65.         indicates some form of physical flaw that might prevent data from
  66.         being reliably written and read. The list of such defects
  67.         is typically printed and attached to the outside of the drive.
  68.  
  69.         When these tracks are entered into the low level formatter, the
  70.         defective tracks receive a special code in their sector ID
  71.         headers which indicates that the track has been flagged as bad
  72.         and cannot be used for any data storage. Later, as we shall see,
  73.         high level formatting moves this defective track information
  74.         into the system's File Allocation Table (FAT) to prevent the
  75.         operating system from allocating files within these defective
  76.         regions.
  77.  
  78.         When the low level format has been established, we have a
  79.         completely empty drive, devoid of stored information, which can
  80.         accept and retrieve data with the specification of any valid
  81.         cylinder, head, and sector number.
  82.  
  83.         There's an important issue about the low level formatting of a
  84.         hard disk which is frequently overlooked, but which can be quite
  85.         important to appreciate. Since the hard disk controller works in
  86.         intimate concert with its hard disk drive to transfer the data
  87.         within its numbered sectors to and from the computer's memory,
  88.         the exact details of the address mark, sector ID header, and
  89.         rotational sector timing can be completely arbitrary for any
  90.         controller and drive. Since these details are initially
  91.         established when the drive receives its low level formatting,
  92.         they are forever hence agreed upon by both the hard disk drive
  93.         and the controller. But more importantly, there's absolutely no
  94.         reason to assume that the relatively arbitrary low level
  95.         formatting specifics used by any particular hard disk controller
  96.         would be compatible with any other model of hard disk
  97.         controller.
  98.  
  99.         In practice this means that differing makes or models of hard
  100.         disk controllers are completely unable to read, write, or
  101.         interpret the formatted information created by any other make or
  102.         model of controller. Consequently, whenever it is
  103.         necessary or desirable to exchange hard disk controllers, a
  104.         complete backup of the hard disk's data, while attached to the
  105.         initial controller, MUST BE followed by creating a new low level
  106.         format with the new controller on the drive before any of the
  107.         backed-up information can be restored to the drive with the new
  108.         controller.
  109.  
  110.         So we've given our drives a low level format, since we see that
  111.         it is this process which first establishes "communication"
  112.         between a hard disk and its controller by creating 512-byte
  113.         "sectors"
  114.         where none existed before. Now lets take up the next phase of
  115.         hard disk structuring: The hard disk PARTITION.
  116.  
  117.         The notion of hard disk (or "fixed disk" as IBM calls them)
  118.         partitions was created to allow a hard disk based computer
  119.         system to contain and "boot up" several completely different
  120.         operating systems. Partitioning divides a single physical hard
  121.         disk into multiple LOGICAL partitions.
  122.  
  123.         A birthday cake is divided into multiple pieces by slicing it
  124.         radially whereas a hard disk's divisions are circular. For
  125.         example, a drive's first partition might extend from cylinder
  126.         zero through 299 with the second partition beginning on cylinder
  127.         300 and extending through 599. This circular partitioning is far
  128.         more efficient since it minimizes the disk head travel when
  129.         moving within a single partition.
  130.  
  131.         The partitions on a drive, even if there's only one, are managed
  132.         by a special sector called the PARTITION TABLE which is located
  133.         at the very beginning of every hard disk. It defines the
  134.         starting and ending locations for each of the disk's partitions
  135.         and specifies which of the partitions is to gain control of the
  136.         system during system boot up. When the hard disk drive is booted
  137.         a tiny program at the beginning of the partition table locates
  138.         the partition which is flagged as being the "bootable partition"
  139.         in the table and executes the program located in the first
  140.         sector, the "boot sector," of that partition. This boot sector
  141.         loads the balance of the partition's operating system then
  142.         transfers control to it.
  143.  
  144.         Each partition on a hard disk is blind to the existence of any
  145.         other.  By universal agreement, the operation of software inside
  146.         a partition is completely contained within the bounds of the
  147.         partition.  Adherence to this agreement prevents multiple
  148.         operating systems from colliding and allows strange environments
  149.         to cohabitate on a single hard disk.
  150.  
  151.         The sectors within a partition are numbered sequentially
  152.         starting at zero and extending to the end of the partition. In
  153.         kind with DOS's original belief that 640K of RAM would be more
  154.         than we'd EVER need, there was a time in the not-so-distant past
  155.         when a ten megabyte hard disk was an unheard of luxury and was
  156.         considered huge. How could any single person ever fill up 10
  157.         megabytes? No way.
  158.  
  159.         Consequently DOS was designed to access sectors within its hard
  160.         disk partition with a single sixteen-bit quantity. One "word"
  161.         was set aside for the specification of partition sectors. As
  162.         many of you know, a single sixteen-bit binary word can represent
  163.         values from 0 through 65,535. So this limited a partition's
  164.         total sector count to 65,536. Since hard disk sectors are 512
  165.         bytes long, a partition could contain 33,554,432 bytes. When you
  166.         remember that binary megabytes are really 1,048,576 bytes each,
  167.         that's exactly 32 megabytes.
  168.  
  169.         This is the origin of DOS's infamous 32 megabyte barrier. Today
  170.         of course we have affordable drives with capacities well
  171.         exceeding DOS's 32 megabyte limit. The industry has invented
  172.         three solutions to this partition size dilemma.
  173.  
  174.         The first solution invented to the partition size problem
  175.         utilizes DOS's inherent extendibility with external device
  176.         drivers. Programs such as OnTrack's DISK MANAGER, Storage
  177.         Dimensions' SPEEDSTOR, and Golden Bow's VFEATURE DELUXE utilize a
  178.         clever trick to circumvent the 32 megabyte DOS limit: They trick
  179.         DOS into believing that sectors are larger than 512 bytes! By
  180.         interposing themselves between DOS and the hard disk, these
  181.         partitioning device drivers lead DOS to believe that individual
  182.         sectors are much larger than they really are. Then when DOS asks
  183.         for one "logical" 4k-byte sector they hand DOS eight 512-byte
  184.         physical sectors. This transforms the 65,536 sector count limit
  185.         into a single partition containing more than 268 megabytes!
  186.  
  187.         The second solution was introduced by IBM's PC-DOS 3.3 operating
  188.         system with its ability to allow DOS to have simultaneous access
  189.         to multiple logical partitions on a single drive. With DOS 3.3,
  190.         the standard FDISK command can establish any number of 32-
  191.         megabyte or smaller partitions on a drive. While this doesn't
  192.         create a single unified huge partition, it also doesn't require
  193.         any external resident device drivers.
  194.  
  195.         The final solution has recently been introduced by Compaq
  196.         Computer with their introduction of DOS 3.31. Being big enough
  197.         to get away with sacrificing some software compatiblity, Compaq
  198.         has redefined the way DOS numbers its partition sectors thereby
  199.         removing the limitation at its source.
  200.  
  201.         So now our hard disks have a low level format, with 
  202.         "addressability" to the disk's individual physical sectors 
  203.         established.  We have also defined and established partitions on 
  204.         our drive, which gives DOS a sub-range of the hard disk within 
  205.         which to build its filing system. Now let's examine the 
  206.         structure of MS-/PC-DOS filing systems. The following discussion 
  207.         also applies to DOS diskettes which aren't partitioned but 
  208.         otherwise have an identical structure. 
  209.  
  210.         Let's begin by looking at the problem that DOS's filing system
  211.         solves: Its task is to allow us, through the vehicle of DOS
  212.         application programs, to create named collections of bytes of
  213.         data, called files, and to help with their management by
  214.         providing directories of these named files.
  215.  
  216.         The directory entry for any DOS file contains the file's name
  217.         and extension, the date and time when the file was last written
  218.         and closed, an assortment of Yes/No "attributes" which indicate
  219.         whether the file has been modified since last backup, whether it
  220.         can be written to, whether it's even visible in the directory,
  221.         etc. The directory entry for the file also contains the address
  222.         of the start of the file.
  223.  
  224.         We already know that hard disks are divided into numbered
  225.         sectors 512 bytes in length. Since most of the files DOS manages
  226.         are much larger than a single sector, disk space is allocated in
  227.         "clumps" of sectors called clusters. Various versions of DOS
  228.         utilize clusters of 4, 8 or 16 sectors each, or 2048, 4096, or
  229.         8192 bytes in length.
  230.  
  231.         When a hard disk is completely empty, its clusters of sectors
  232.         are all available for storing file data. As files are created
  233.         and deleted on the hard disk, a bookkeeping system is needed
  234.         which keeps track of which clusters are in use by which existing
  235.         files, and which clusters are still available for allocation to
  236.         new or growing files. This is the vital role played by the File
  237.         Allocation Table. The "FAT," as it's frequently called, is the
  238.         table DOS uses to manage the allocation of space on the hard
  239.         disk.
  240.  
  241.         As we know, the hard disk is arranged as a long stream of
  242.         sectors.  After being clumped together into clusters, it can be
  243.         viewed as a long stream of clusters. Now picture a table
  244.         consisting of a
  245.         long stream of entries, with one entry in the table for each
  246.         cluster on the disk. The first FAT table entry corresponds to
  247.         the first hard disk cluster, and the last FAT entry corresponds
  248.         to the last hard disk cluster.
  249.  
  250.         Now imagine that DOS needs to create a new text or spreadsheet
  251.         file for us. It must first find a free cluster on the hard disk,
  252.         so it searches through the File Allocation Table looking for an
  253.         empty FAT table entry, which corresponds to an empty hard disk
  254.         cluster. When DOS finds the empty table entry it memorizes its
  255.         number, then places a special "end of chain" marker in the FAT
  256.         entry to show that this cluster has been allocated and is no
  257.         longer free for use. DOS then goes out to the sectors which
  258.         comprise this cluster and writes the file's new data there.
  259.  
  260.         This is all great until the file grows longer than a single
  261.         cluster of sectors. DOS now needs to allocate a second cluster
  262.         for this file. So it once again searches through the File
  263.         Allocation Table for a free cluster. When found, it again places
  264.         the special "end of chain" marker in this cluster and memorizes
  265.         its number.
  266.  
  267.         Now things begin to get interesting... and just a little bit
  268.         tricky. Since files might be really long, consisting of
  269.         thousands of individually allocated clusters, there's no way for
  270.         DOS to memorize all of the clusters used by each file. So DOS
  271.         uses each File Allocation Table entry to store the number of the
  272.         file's next cluster!
  273.  
  274.         Following along with our example, after finding and allocating
  275.         the second cluster for the growing file, DOS goes back to the
  276.         first cluster's FAT entry where it had placed that first "end of
  277.         chain" marker and replaces it with the number of the file's
  278.         second cluster. If a third cluster were then needed, its FAT
  279.         entry would be marked "not available" by placing the special
  280.         "end of chain" marker in it, then this third cluster number
  281.         would be placed into the second cluster's FAT entry. Get it?
  282.  
  283.         This creates a "chain" of clusters with each cluster entry
  284.         pointing to the next one, and the last one containing a special
  285.         "end of chain" entry which signals that the end of the file's
  286.         allocation chain has been reached.
  287.  
  288.         Finally, when the file is "closed," an entry is created in a DOS
  289.         directory which names the file and contains the number of the
  290.         file's first cluster. Then, using that first cluster's FAT
  291.         entry, the entire allocation "chain" can  be "traversed" to find
  292.         the clusters which contain the file's data.
  293.  
  294.         So now let's do a bit of review....
  295.  
  296.         The allocation of file space within a DOS partition is recorded
  297.         and maintained within DOS's File Allocation Tables (FATs). The
  298.         FATs make up a map of the utilization of space on any floppy or
  299.         hard disk with one entry in the FAT for each allocatable cluster
  300.         of sectors. Each entry in the FAT can indicate one of four
  301.         possible conditions for the clusters of sectors it represents:
  302.         It can be unused and available for allocation, unused and marked
  303.         as bad to prevent its use, in use and pointing to the next
  304.         cluster of the file, or in use as the last cluster of a file.
  305.  
  306.         If each entry in the FAT points to the next, who points to the
  307.         first entry? This is the role of the file's directory entry. It
  308.         contains the name of the file, the file's exact length, the time
  309.         and date of the file's last modification, file attribute flags,
  310.         and the identity of file's first cluster. In a sense, a file's
  311.         directory entry forms the head of the file's allocation chain
  312.         with each link thereafter pointing to the next link in the
  313.         chain.
  314.  
  315.         This system, while quite workable and efficient, does have its
  316.         dangers. These dangers center around the fact that the FAT
  317.         contains the ONLY record of disk space utilization and a
  318.         stubborn failure to correctly read a single sector of the FAT
  319.         could render hundreds of files unrecoverable. This danger
  320.         explains the popularity of several utility programs which create
  321.         a back-up copy of the File Allocation Table and Root Directory
  322.         with each system boot-up. They provide some hope of recovery
  323.         from the cataclysmic loss of the FAT's data.
  324.  
  325.         The original designers of DOS were aware of the importance of
  326.         the FAT and do provide a duplicate copy immediately following
  327.         the first, but its physical proximity to the original renders it
  328.         little better than none, and DOS has long been notorious for
  329.         failing to intelligently utilize this extra copy of FAT
  330.         information even in the event of a primary FAT failure. (DOS 3.3
  331.         seems to be much smarter in this regard.)
  332.  
  333.         Important as FAT reliability is, it's not generally the prime
  334.         source of DOS file corruption, since even with perfect data
  335.         retrieval, it's still possible to scramble DOS's files like
  336.         crazy. The primary cause of DOS file system troubles are user
  337.         error, program bugs, and "glitches." The advent of TSR "rule
  338.         breaking" resident multitasking-style software has further
  339.         complicated the scene.
  340.  
  341.         When a new file is created or "opened," information about it is
  342.         maintained inside DOS. The file's name, status, and first
  343.         cluster are all held in internal tables. Then, as the file
  344.         grows, free clusters are "checked out" of the File Allocation
  345.         Table and allocated to the file's chain of clusters.
  346.  
  347.         Now here's the crucial fact which causes so much trouble: No
  348.         matter how big the newly created file becomes, a directory entry
  349.         for the file is ONLY created when the file is finally and
  350.         properly CLOSED. Until then the file exists only as a chain of
  351.         allocated clusters filled with the file's data. If anything
  352.         occurs to prevent the error-free closing of this file we have a
  353.         real problem because the file's data is occupying a chain of
  354.         "checked out" disk clusters, but there is no anchoring directory
  355.         entry to point to the first cluster in the chain!
  356.  
  357.         A chain of clusters without an anchoring directory entry is
  358.         called a "lost chain." It exists, it contains data, but there's
  359.         no record of the file's name, exact size, or purpose.
  360.  
  361.         Lost cluster chains are frequently created when programs abort
  362.         abnormally, when TSR's crash the system suddenly, when the
  363.         computer user forgets to write a TSR's files out to disk before
  364.         shutting the system down, or when a task in a multi-tasking
  365.         system is not terminated. (It's easy to forget that a file was
  366.         left open in a suspended background task.) Additionally, any
  367.         damage to DOS's root directory or subdirectories can "liberate"
  368.         chains of lost clusters.
  369.  
  370.         DOS provides the CHKDSK (pronounced Check Disk) command to help
  371.         its users keep an eye on just these sorts of problems. CHKDSK
  372.         provides a comprehensive verification of DOS's filing system
  373.         integrity and provides a means for straightening things out.
  374.         When the CHKDSK command is given, the parentage of all cluster
  375.         chains is checked, allocation chains are "followed" to be sure
  376.         they don't cross over other chains (creating cross-linked
  377.         files), and several other system integrity checks are performed.
  378.  
  379.         In the case of lost chains, CHKDSK will offer to convert these
  380.         into files by anchoring them to the root directory. Then any
  381.         suitable text editor can be used to open these new files for the
  382.         sake of identifying them and moving them back to where they
  383.         belong.
  384.  
  385.         Unfortunately the structure of DOS filing systems lacks the
  386.         fundamental redundancy required to provide simple and error-free
  387.         recovery from many forms of damage. Even the tools and
  388.         techniques available from third party suppliers can't surmount
  389.         these problems. The best bet is to understand DOS's weak spots,
  390.         make certain that all opened files are closed successfully,
  391.         perform a weekly CHKDSK command to collect accumulating file
  392.         fragment "debris" and back up your hard disks regularly.
  393.  
  394.         "Disk Optimizers" which promise to increase the throughput and
  395.         performance of old and well used hard disk drives number among
  396.         the most popular of the general use hard disk utilities.
  397.  
  398.         We've seen how DOS's file allocation system operates. Files are
  399.         composed of clusters which in turn are composed of sectors. And
  400.         while the group of sectors which comprise a cluster are by
  401.         definition contiguous, the cluster linking scheme which DOS
  402.         employs allows a file's clusters to be scattered across the
  403.         disk's surface. Since the file's directory entry specifies the
  404.         file's first cluster, and each succeeding cluster entry in the
  405.         file allocation table specifies the next one, the file's
  406.         contents could be literally anywhere on the disk. The term "file
  407.         fragmentation" refers to the condition where a file's clusters
  408.         are not consecutively numbered. Let's first examine how a disk's
  409.         files might become fragmented.
  410.  
  411.         When a file is deleted from a disk, its directory entry is
  412.         flagged as unused and each cluster which the file occupied is
  413.         flagged in the system's FAT as being free for use. If the
  414.         surrounding clusters are still in use by other files, this
  415.         creates a "hole" of free space in the disk.
  416.  
  417.         Now suppose that a new file is copied from a floppy disk onto
  418.         the hard disk. As DOS reads the new file's data from the floppy,
  419.         it must allocate space for this file on the hard disk. So each
  420.         time another cluster of sectors is needed, DOS searches through
  421.         the file allocation table to find the next available cluster. In
  422.         our example, DOS would discover the clusters which had been
  423.         freed by the first file we deleted and allocate them for use by
  424.         the new file. Then, when all of the clusters in the free space
  425.         hole had been used, DOS would be forced to continue its search
  426.         deeper into the drive. When space was found further in, the
  427.         file's contents would be partially stored near the beginning of
  428.         the disk and partially nearer to the end. The file would then
  429.         consist of at least two fragments.
  430.  
  431.         During the normal course of daily computer usage, many files are
  432.         being constantly created, copied, extended, deleted, and
  433.         replaced. When a wordprocessor creates an automatic backup file,
  434.         the original file is typically renamed to identify it as a
  435.         backup file and a new file is created. Every new file creation
  436.         is an opportunity for fragmentation. The files which are being
  437.         modified most often are most subject to extensive fragmentation
  438.         since any search by DOS for a free file cluster is almost
  439.         guaranteed to produce a new discontinuity. With continued use,
  440.         it's typical for much of the disk's file data to become
  441.         haphazardly scattered across the surface of the disk drive.
  442.  
  443.         But since DOS's cluster allocation scheme was specifically
  444.         designed to manage such scattering, what's the problem? Any time
  445.         the drive's head moves, two things occur: Time is consumed, and
  446.         the drive experiences some mechanical wear and tear. If a file's
  447.         data is scattered across the surface of the disk, the drive's
  448.         head is forced to move a large distance many times to read a
  449.         single file. If the file is a database whose records are being
  450.         accessed at random, this excessive head motion can degrade the
  451.         overall system performance tremendously and induce many other
  452.         wear-related disk drive problems.
  453.  
  454.         The extra time wasted in cluster fragment chasing is directly
  455.         proportional to the drive's average head access time. The prior
  456.         generation of 65 to 80 millisecond stepping motor drives lose
  457.         far more performance to fragmentation than the latest sub-28
  458.         millisecond drives.
  459.  
  460.         Disk optimizers like SoftLogic Solutions' DISK OPTIMIZER,
  461.         Norton's SPEEDDISK, Central Point's COMPRESS, and Golden Bow's
  462.         VOPT operate by physically rearranging the allocation of files
  463.         on the disk. They relocate file cluster fragments while
  464.         simultaneously updating the system's File Allocation Tables to
  465.         reflect the new cluster locations. When finished, every file on
  466.         the disk consists of a single contiguous run of consecutively
  467.         numbered clusters. Once the disk drive's head has been
  468.         positioned to the beginning of the file, the entire file can be
  469.         read or randomly accessed with an absolute minimum of head
  470.         motion. Besides improving the system's overall performance, file
  471.         defragmentation minimizes the mechanical wear and tear placed
  472.         upon the drive's hardware. If some disaster should befall your
  473.         system's Root Directory or File Allocation Table, contiguous
  474.         files are also much easier to find and recover than files with
  475.         severe fragmentation.
  476.  
  477.         Since file fragmentation is a continually occurring fact of
  478.         living with DOS, periodic defragmentation, like hard disk
  479.         backup, should become part of every serious DOS user's regimen.
  480.  
  481.                                    - The End -
  482.  
  483.  
  484.                      Copyright (c) 1989 by Steven M. Gibson
  485.                              Laguna Hills, CA 92653
  486.                             **ALL RIGHTS RESERVED **
  487.